// *** ADDED BY HEADER FIXUP ***
#include <string>
// *** END ***
#ifndef Amigo_H
#define Amigo_H

#include "Definicoes.h"
#include "Email.h"
#include <sstream>
//! @details Classe que contem as informacoes necessarias para se criar um amigo.
class Amigo
{
private:
    //! @param enviado Atributo que contem o email de quem enviou o convite de amizade
    Email enviado;
    //! @param recebido Atributo que contem o email de quem recebeu o convite de amizade
    Email recebido;
    //! @param estado Atributo que contem o estado da amizade(-1,0,1 que correspondem a recusado, pendente e confimado)
    int estado;
    //! @details Faz a validacao do int para que seja apenas validos os numeros -1,0,1
    void validarEstado(int&);
public:
    //! @details Construtor sem parametros.
    Amigo(){};
    //! @details Construtor completo.
    Amigo(Email&,Email&,int&);
    //! @details Retorna um objeto Email que contem o email de quem enviou o convite.
    //! @return Objeto Email.
    Email getEnviado();
    //! @details Atribui ao atributo enviado um objeto Email.
    void setEnviado(Email&);
    //! @details Retorna um objeto Email que contem o email de quem recebeu o convite.
    //! @return Objeto Email
    Email getRecebido();
    //! @details Atribui ao atributo recebido um objeto Email.
    void setRecebido(Email&);
    //! @details Retorna um int que contem o estado da amizade.
    //! @return int estado
    int getEstado();
    //! @details Retorna uma string que contem o estado da amizade.
    //! @return string
    string getEstadoString();
    //! @details Atribui ao atributo estado um int.
    void setEstado(int&);
    //! @details Chama os outros metodos set.
    void setBasicInfo(Email&,Email&,int&);
};

inline string Amigo::getEstadoString()
{
    string s;
    ostringstream convert;
    convert<<estado;
    s = convert.str();
    return s;
}

inline Email Amigo::getEnviado()
{
    return enviado;
}

inline Email Amigo::getRecebido()
{
    return recebido;
}

inline int Amigo::getEstado()
{
    return estado;
}
#endif
